import cv2          # 计算机视觉处理（视频读取、图片保存）
import os           # 文件路径操作
import numpy as np  # 数值计算（随机数生成）
import matplotlib.pyplot as plt  # 图像可视化
video = "wrjs.mp4"
cap = cv2.VideoCapture(video)  # 初始化视频捕获对象
frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  # 获取总帧数
print("帧数：", frames)

save_path = "./wrjs/"
if not os.path.exists(save_path):
    os.makedirs(save_path)  # 创建文件夹（若不存在）
cnt = 1
for i in range(frames):
    retval, frame = cap.read()  # 读取一帧（retval为是否成功，frame为图像数据）
    if retval:
        save_filename = os.path.join(save_path, "{:0>6d}.jpg".format(cnt))
        cv2.imwrite(save_filename, frame)  # 保存为6位补零的jpg文件（如000001.jpg）
        cnt += 1
print("{}文件夹下共有{}个文件！".format(save_path, cnt-1))

plt.figure()
for i in range(4):
    n = np.random.randint(1, frames)  # 生成1到frames-1的随机整数（因Python区间左闭右开）
    img_path = os.path.join(save_path, "{:0>6d}.jpg".format(n))
    img = cv2.imread(img_path)
    plt.subplot(2, 2, i+1)  # 创建2x2子图布局
    plt.imshow(img)         # 显示图像
    plt.axis("off")         # 关闭坐标轴
plt.show()  # 显示所有子图
cap.release()  # 释放视频捕获对象，避免内存泄漏